GtkMenuShell: always 'activate' menu shells
authorMatthias Clasen <mclasen@redhat.com>
Wed, 13 Apr 2011 17:28:46 +0000 (13:28 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 13 Apr 2011 17:28:46 +0000 (13:28 -0400)
Failing to do so can leave us with a stuck grab in some cases.
https://bugzilla.gnome.org/show_bug.cgi?id=554057

gtk/gtkmenubar.c
gtk/gtkmenushell.c
gtk/gtkmenushellprivate.h

index b35ec0ca89a096e470ade725100e4f70042b92a6..b234b27d18fd626415fbe50f877d28c889e4ba82 100644 (file)
@@ -686,7 +686,6 @@ window_key_press_handler (GtkWidget   *widget,
              GtkMenuShell *menu_shell = GTK_MENU_SHELL (menubars->data);
 
               _gtk_menu_shell_set_keyboard_mode (menu_shell, TRUE);
-             _gtk_menu_shell_activate (menu_shell);
              gtk_menu_shell_select_first (menu_shell, FALSE);
              
              g_list_free (menubars);
index f210cab85ef229213b17a8fa3f9e6f4ec373dd22..0f22d4782df75b5db56d1a9d6366ba67211381e0 100644 (file)
@@ -1190,7 +1190,6 @@ gtk_real_menu_shell_deactivate (GtkMenuShell *menu_shell)
 
   if (priv->active)
     {
-
       priv->button = 0;
       priv->active = FALSE;
       priv->activate_time = 0;
@@ -1313,6 +1312,8 @@ gtk_menu_shell_real_select_item (GtkMenuShell *menu_shell,
       return;
     }
 
+  _gtk_menu_shell_activate (menu_shell);
+
   priv->active_menu_item = menu_item;
   if (pack_dir == GTK_PACK_DIRECTION_TTB || pack_dir == GTK_PACK_DIRECTION_BTT)
     _gtk_menu_item_set_placement (GTK_MENU_ITEM (priv->active_menu_item),
index 6015f0c6e28bafba6402d3b8e902b5aa4557858c..5c93b084e834f0323ba2e3fdb1ccc7f026ba5672 100644 (file)
@@ -58,7 +58,6 @@ struct _GtkMenuShellPrivate
 
 void        _gtk_menu_shell_select_last      (GtkMenuShell *menu_shell,
                                               gboolean      search_sensitive);
-void        _gtk_menu_shell_activate         (GtkMenuShell *menu_shell);
 gint        _gtk_menu_shell_get_popup_delay  (GtkMenuShell *menu_shell);
 void        _gtk_menu_shell_set_grab_device  (GtkMenuShell *menu_shell,
                                               GdkDevice    *device);